perm filename FOO[UCI,SYS] blob
sn#063586 filedate 1973-09-24 generic text, type T, neo UTF8
1) ILISP.MAC vs. 2) UCILSP.MAC SRCCOM 09-24-73 21:15 PAGES 1,1
******** ILISP.MAC **** PAGE 1
1) 00100 TITLE ILISP INTERPRETER
1) 00150 TWOSEG
*** UCILSP.MAC *** PAGE 1
2) 00200 TITLE LISP INTERPRETER
2) 00300 TWOSEG
******** ILISP.MAC **** PAGE 1
1) 00300 IFNDEF SYSPRG,<SYSPRG==0
*** UCILSP.MAC *** PAGE 1
2) 00550 SYSPRG==654351 ;***
2) 00575 SYSPN==6744 ;***
2) 00600 IFNDEF SYSPRG,<SYSPRG==0
******** ILISP.MAC **** PAGE 1
1) 01200 DEFINE SYSNAM <SIXBIT /ILISP2/> ; *** MJC
1) 01300 ;accumulator definitions
*** UCILSP.MAC *** PAGE 1
2) 02100 DEFINE SYSNAM <SIXBIT /LISP/>
2) 02300 ;accumulator definitions
******** ILISP.MAC **** PAGE 1
1) 08800 ; CAME 0,STNIL ;$$UNBIND STACK IF REGS LOOK OK *** MJC
1) 08850 ; JRST GETHGH ;GO GET HIGH SEGMENT *** MJC
1) 08900 ; MOVE B,SC2 *** MJC
1) 08950 ; PUSHJ P,UBD ;$$UNBIND STACK *** MJC
1) 09000 ; JRST STRT ;go to re-allocator *** MJC
1) 09050 ;GETHGH: CALLI RESET *** MJC
1) 09100 ; MOVSI A,1 *** MJC
1) 09150 ;IFE STANSW,< CALLI A,CORE ;ELIMINATE ANY OLD HIGH SEGS. *** MJC
1) 09200 ; HALT > *** MJC
1) 09250 ;*** IFN STANSW,< CALLI A,400015
*** UCILSP.MAC *** PAGE 1
2) 17300 CAME 0,STNIL ;$$UNBIND STACK IF REGS LOOK OK
2) 17400 JRST GETHGH ;GO GET HIGH SEGMENT
2) 17500 MOVE B,SC2
2) 17600 PUSHJ P,UBD ;$$UNBIND STACK
2) 17700 JRST STRT ;go to re-allocator
2) 17800 GETHGH: CALLI RESET
2) 17900 MOVSI A,1
2) 18000 IFE STANSW,< CALLI A,CORE ;ELIMINATE ANY OLD HIGH SEGS.
2) 18005 HALT >
2) 18010 ;*** IFN STANSW,< CALLI A,400015
1) ILISP.MAC vs. 2) UCILSP.MAC SRCCOM 09-24-73 21:15 PAGES 1,1
******** ILISP.MAC **** PAGE 1
1) 09500 MOVE A,HGHDAT+1 ; Get high segment name *** MJC
1) 09550 CALLI A,400016 ; Attach to high seg if poss. *** MJC
1) 09600 CAIN A,4 ; If err=4 (seg alrdy there) ok too *** MJC
1) 09650 JRST SGPROT ; Success! *** MJC
1) 09750 CALLI 400017 ; Detach stray segments. *** MJC
1) 09800 MOVE A,HGHDAT ; Get device name for OPEN. *** MJC
1) 09850 MOVEM A,INTDAT+1 ; Move into parm list for OPEN. *** MJC
1) 09900 OPEN 0,INTDAT ; Init ch 0 to dump mode. *** MJC
1) 09950 JRST NOSEG ; Couldn't do it? *** MJC
1) 10000 MOVE A,SGPPPN ; Get ppn of high seg file. *** MJC
1) 10050 MOVEM A,HGHDAT+4 ; Store for LOOKUP. *** MJC
1) 10100 LOOKUP 0,HGHDAT+1 ; Find file containing high seg *** MJC
1) 10150 JRST NOSEG ; No high seg file -- collapse *** MJC
1) 10200 HLRE A,HGHDAT+4 ; Ppn was replaced by -length *** MJC
1) 10250 MOVNS A ; Fix up for CORE2. *** MJC
1) 10300 CALLI A,400015 ; Grab core for high segment. *** MJC
1) 10350 JRST NOSEG ; Can't get it? *** MJC
1) 10400 MOVE A,HGHDAT+1 ; Name the high segment. *** MJC
1) 10450 CALLI A,400036 ; SEGNM2 uuo. *** MJC
1) 10500 JRST NOSEG ; Pretty weird. *** MJC
1) 10550 MOVEI A,SHRST-1 ; For dump mode input. *** MJC
1) 10600 HRRM A,HGHDAT+4 ; *** MJC
1) 10650 INPUT 0,HGHDAT+4 ; Fill high seg with goodies. *** MJC
1) 10700 CLOSE 0,1 ; Destroy fingerprints. *** MJC
1) 10750 SGPROT: MOVEI A,DEBUGO ;SET THE REE ADDRESS
1) 10800 HRRM A,JOBREN
1) 10850 MOVE A,HGHDAT+1 ; Decide whether or not to *** MJC
1) 10900 CAME A,[SYSNAM] ; protect segment. *** MJC
1) 10950 JRST STRT ; Segment was not system's *** MJC
1) 11000 CALLI 36 ; Write-protect segment. *** MJC
1) 11050 HALT ; rather than turn him loose. *** MJC
1) 11100 JRST STRT ;GO TO ALLOCATE STORAGE
1) 11150 NOSEG: OUTSTR [ASCIZ/CAN'T GET HIGH SEGMENT!/] ; *** MJC
1) 11200 HALT ; *** MJC
1) 11250 HGHDAT: SYSDEV ; All used by LOOKUP and ENTER *** MJC
1) 11300 SYSNAM ; High segment job & file name *** MJC
1) 11350 0 ; High seg file extension. *** MJC
1) 11400 0
1) 11450 0 ; PRG,PPN of high seg file. *** MJC
1) 11500 ; Also file length after LOOKUP *** MJC
1) 11550 ; Used as dump wd cmd list. *** MJC
1) 11600 0
1) 11650 INTDAT: 17 ; Data mode. *** MJC
1) 11700 SYSDEV ; Dev name (defd before OPEN) *** MJC
1) 11750 0 ; Buffer indicators (none) *** MJC
1) 11800 SGPPPN: XWD SYSPRG,SYSPN ; High seg file area *** MJC
1) 11850 PATCHL: BLOCK 20
1) ILISP.MAC vs. 2) UCILSP.MAC SRCCOM 09-24-73 21:15 PAGES 1,1
1) 11900 >
1) 12050 DDT: SETOM ERINT ;$$SET CONTROL H WITHOUT GOING THRU REE
*** UCILSP.MAC *** PAGE 1
2) 18500 MOVEI A,DEBUGO ;SET THE REE ADDRESS
2) 18600 HRRM A,JOBREN
2) 18700 JRST STRT ;GO TO ALLOCATE STORAGE
2) 18800 HGHDAT: SYSDEV
2) 18900 SYSNAM
2) 19000 0
2) 19100 0
2) 19200 XWD SYSPRG,SYSPN
2) 19300 0>
2) 19600 DDT: SETOM ERINT ;$$SET CONTROL H WITHOUT GOING THRU REE
******** ILISP.MAC **** PAGE 12
1) 27700 NAME: SIXBIT/ILISP/
1) 27750 0
*** UCILSP.MAC *** PAGE 12
2) 55400 NAME: SYSNAM
2) 55500 0
******** ILISP.MAC **** PAGE 12
1) 33150 CAME A,[SYSNAM] ; *** MJC
1) 33200 ; We're not allowing him to name his segment the same as ours, *** MJC
1) 33250 ; since that causes problems for ATTSEG, so test for it. *** MJC
1) 33300 JRST GUDSEG ; *** MJC
1) 33350 MOVE B,[SYSDEV] ; But if he's a system hacker *** MJC
1) 33400 CAME B,DEV ; then we let him get away *** MJC
1) 33450 JRST BADSEG ; with it. *** MJC
1) 33500 GUDSEG: MOVEM A,HGHDAT+1 ;SAVE THE FILE NAME
1) 33550 MOVE A,DEV ;GET THE DEVICE AND SAVE IT
1) 33600 MOVEM A,HGHDAT
1) 33650 MOVEM A,INTDAT+1 ; Save it for OPEN, too. *** MJC
1) 33700 MOVE A,PPN ;GET THE PPN AND SAVE IT
1) 33750 MOVEM A,SGPPPN ; *** MJC
1) 33800 MOVEM A,HGHDAT+4
1) 33850 SKIPN A,EXT ; Get extension and save it. *** MJC
1) 33900 MOVE A,[SIXBIT/SEG/] ; No ext -- use SEG instead. *** MJC
1) 33950 MOVEM A,HGHDAT+2 ; Move ext into OPEN stuff. *** MJC
1) 34000 OPEN 0,INTDAT ; Open for dump output. *** MJC
1) 34050 JRST BADSEG ; Couldn't open? *** MJC
1) 34100 ENTER 0,HGHDAT+1 ; Hookup to file. *** MJC
1) 34150 JRST BADSEG ; Couldn't do it? *** MJC
1) 34200 CALLI A,400022 ; Find size of high segment. *** MJC
1) 34250 MOVNS A ; Construct dump mode cmd wd. *** MJC
1) 34300 HRLM A,HGHDAT+4 ; I.e. -length to left half *** MJC
1) ILISP.MAC vs. 2) UCILSP.MAC SRCCOM 09-24-73 21:15 PAGES 12,12
1) 34350 MOVEI A,SHRST-1 ; and <start>-1 to rt half. *** MJC
1) 34400 HRRM A,HGHDAT+4 ; *** MJC
1) 34450 OUTPUT 0,HGHDAT+4 ; *** MJC
1) 34500 CLOSE 0,2 ; Leave no traces *** MJC
1) 34550 JRST FALSE ;RETURN NIL
1) 34600 BADSEG: ERR1 [SIXBIT/ILLEGAL NAME FOR SEGMENT!/] ; *** MJC
1) 34650 JRST FALSE ; *** MJC
1) 34750 REMOTE<WRTSTS: 1>
*** UCILSP.MAC *** PAGE 12
2) 66100 MOVEM A,HGHDAT+1 ;SAVE THE FILE NAME
2) 66200 MOVE A,DEV ;GET THE DEVICE AND SAVE IT
2) 66300 MOVEM A,HGHDAT
2) 66400 MOVE A,PPN ;GET THE PPN AND SAVE IT
2) 66500 MOVEM A,HGHDAT+4
2) 66600 JRST FALSE ;RETURN NIL
2) 66800 REMOTE<WRTSTS: 1>